package hotel.meituan.oversea.biz.service;

import hotel.base.oversea.utils.Result;
import hotel.meituan.oversea.api.entity.MtHotelDetail;
import hotel.meituan.oversea.api.entity.MtHotelDetailOperLog;
import hotel.meituan.oversea.api.vo.up.response.hotel.MtHotelDetailVo;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**美团酒店信息业务接口
 *
 */
@Service
public interface MtHotelService {
    /**
     * 酒店ids数据-获取并保存
     * @desc 当前查询下一页数据pageSize不变，maxId变更为上一次查询返回的maxId作为查询数据标识
     * @param maxId  查询上一页时返回的maxId标记值, 查询第一页时该值为0,maxId 从0开始
     * @param pageSize 每页酒店个数，取值范围[1,1000
     * @return maxId 标记值，用于下一页查询。当maxId为-1时，表示已经查询到最后一页
     *          hotelIds  可分销的酒店ID列表
     */
    Result<Object> getMtHotelIdsData(int maxId, int pageSize);
    Result<Object> saveHotelIds(Map<Integer, List<Long>> hoteIdsListMaps);
    /**
     * 酒店详情数据-获取
     * @param hotelIds 酒店ids
     * @return strategy 查询类型
     */
    Result<Object> getMtHotelDetail(List<Long> hotelIds, Integer strategy);
    Result<Object> getMtHotelDetail(List<Long> hotelIds);
    Result<Object> queryPageHotelIds(int index, int pageSize);

    Result<Object> saveHotelInfos(Map<String, List<MtHotelDetailVo>> redisHotelInfoMap);
    Result<Object> saveBasicHotelInfo(List<MtHotelDetailVo> redisHotelInfos);

    void updateStateTypeByHotelId(MtHotelDetail mtHotelDetail, MtHotelDetailOperLog operlog);
    void redisSaveUpdateMtHotelInfos(Map appendMap);
    Result<Object> findAllHotelIdsPutRedis();

    Result<Object> checkHotelFailure(List<Long> hotelIds);

    Result getHHbDownHotels();
}
